/**
 * 初始化i18n国际化插件
 * ------- 系统翻译: --------
 * 1. 如果使用了组件库，需要单独翻译组件库里组件文字的多语言
 * 2. 系统自己创建的组件内的自定义内容的翻译
 * 翻译实现的步骤:
 * 1. 要翻译的文字 => 提供对应语种的翻译结果/语言包(中文和英文两个包)
 * 2. 把语言包传入翻译插件实例中
 *
 * 语言包如何定义: (.js的模块)
 * 1. 数据结构是一个对象
 * 2. 在对象中可以按照模块或页面划分翻译的属性 {login:{},navbar:{}}
 * 3. 在对应模块或页面的属性下使用一个新对象放置翻译结果
 *
 * 核心原理: 读取不同语种的语言包实现不同语言的切换
 */

import Vue from 'vue'
import VueI18n from 'vue-i18n'

/* 组件库的语言包 */
// 引入饿了么的英文包
import elementEN from 'element-ui/lib/locale/lang/en'
// 引入饿了么的中文包
import elementZH from 'element-ui/lib/locale/lang/zh-CN'

/* 自己的语言包 */
import CustomEN from './language/en.js'
import CustomZH from './language/zh.js'

import cookie from 'js-cookie'

// 1. 注册i118n国际化插件
Vue.use(VueI18n)

// 2. 初始化i18n实例
const i18n = new VueI18n({
  // locale: 指定messages中支持的语言包
  // 读取cookie本地存储的hr-lang语言标识
  locale: cookie.get('hr-lang') || 'zh',
  // messages: 接收支持的语言包
  messages: {
    en: {
      ...elementEN,
      ...CustomEN // 将自定义英文包加入
    },
    zh: {
      ...elementZH,
      ...CustomZH // 将自定义中文包加入
    }
  }
})

// 3. 导出实例实例
export default i18n

